home *** CD-ROM | disk | FTP | other *** search
/ CD Classic 39 / CD CLASSIC #39 (1998).iso / EMPRESA / visio / Vistdstd / Install / Data.Z / Lib.C < prev    next >
C/C++ Source or Header  |  1996-09-16  |  4KB  |  167 lines

  1. /*    LIB.C - Source for Visio VSL Entry Point
  2.  *  Copyright (C) 1991-1996 Visio Corporation. All rights reserved.
  3.  *
  4.  *
  5.  *    Abstract
  6.  *        Provides the entry point for a Visio VSL.  Implements one add-on as
  7.  *        a demonstration of how C/C++ Automation add-ons can be run in-proc
  8.  *        to Visio.
  9.  *
  10.  *    Routines:
  11.  *
  12.  *    VisioLibMain    Entry point that Visio calls.
  13.  *
  14.  */
  15.  
  16. /*    The only include dependency that is required by a VSL
  17.  *    is vao.h. Note that vao.h depends on types defined
  18.  *    defined in windows.h which it automatically includes
  19.  *    if necessary.
  20.  */
  21.  
  22. #include "vao.h"                                // Visio Add-ons interface
  23.  
  24. #define VAOEXPORT __declspec(dllexport)
  25.  
  26. /*
  27.  *    ADD-ON DESCRIPTORS
  28.  *
  29.  *    This is the information needed to describe hello's Add-ons to Visio.
  30.  *    This info is packed into an Add-on registration structure that gets
  31.  *    sent to Visio when Visio asks this library to enumerate its Add-ons.
  32.  */
  33.  
  34. enum AddOnIndexes
  35. {
  36.     IDX_DEMO                        = 1,
  37. };
  38.  
  39.  
  40. // Name shown in Visio's "run Add-on" dialog.
  41. #ifdef _DEBUG
  42. #define ADDON_NAME "VSL Automation Demo - DEBUG"
  43. #else
  44. #define ADDON_NAME "VSL Automation Demo"
  45. #endif
  46.  
  47.  
  48. static VAOREGSTRUCT stc_myAddons[] =
  49. {
  50.     {
  51.     IDX_DEMO,                    // Ordinal of Add-on
  52.     VAO_AOATTS_ISACTION | VAO_AOATTS_HASABOUT | VAO_AOATTS_WAITCRSR,
  53.     VAO_ENABLEALWAYS,            // It is is always enabled.
  54.     0,
  55.     0,
  56.     ADDON_NAME,
  57.     },
  58. };
  59.  
  60. //
  61. //    FUNCTION:    VisioLibMain(VAOMSG,WORD,LPVOID)
  62. //
  63. //    PURPOSE:    VisioLibMain() implements the Visio/Add-on protocol defined
  64. //                in vao.h. When Visio loads this library, it will do a 
  65. //                GetProcAddress(VisioLibMain) and then start calling
  66. //                VisioLibMain() at appropriate times.
  67. //
  68. //                When Visio calls VisioLibMain(), it will pass a directive
  69. //                (wMsg) to VisioLibMain() indicating what is to be done.
  70. //                Associated with the message will be a word argument and a
  71. //                far pointer argument. The meaning of these is dependent on
  72. //                wMsg.
  73. //
  74. //                This sample Add-on library is pretty simple. For most types
  75. //                of messages that Visio can pass to it, VisioLibMain() can
  76. //                simply call the Visio Add-on utility that provides default
  77. //                responses to Visio messages, namely VAOUtil_DefVisMainProc().
  78. //
  79. //                The only messages that generic.vsl's VisioLibMain() must
  80. //                respond to are those that implement behavior specific to
  81. //                generic.vsl. Generic.vsl must register those Add-ons it
  82. //                implements, and it must be able to run the Add-ons it
  83. //                implements. Running "VSL Automation Demo" entails calling
  84. //                RunDemo and simple returning when it's done.
  85. //
  86.  
  87. VAOEXPORT VAORC VAOCB VisioLibMain ( VAOMSG wMsg, WORD wParam, LPVOID lpParam )
  88.     {
  89.     VAORC result = VAORC_SUCCESS;
  90.  
  91.     switch ( wMsg )
  92.         {
  93.         case V2LMSG_ENUMADDONS:
  94.             {
  95.             // wParam:      0
  96.             // lpParam: LPVAOV2LSTRUCT
  97.             //
  98.             // Visio is telling us to register this library's Add-ons.
  99.             // The Visio Add-on utility VAOUtil_RegisterAddons() will
  100.             // do this for us if we pass it a pointer to descriptors
  101.             // for this lib's Add-ons, namely stc_myAddons which was
  102.             // declared above.
  103.             //
  104.             result = VAOUtil_RegisterAddons(
  105.                             ((LPVAOV2LSTRUCT)lpParam)->wSessID,
  106.                             stc_myAddons,
  107.                             sizeof(stc_myAddons)/sizeof(VAOREGSTRUCT));
  108.             break;
  109.             }
  110.  
  111.         case V2LMSG_RUN:
  112.             {
  113.             // wParam:      Ordinal of Add-on to run
  114.             // lpParam: LPVAOV2LSTRUCT
  115.             //
  116.             // Visio is telling us to run the Add-on with the given ordinal.
  117.             // In the case of ordinal 1, we want to run the automation demo.
  118.             //
  119.  
  120.             int RunDemo(void);
  121.             
  122.             switch ( wParam )
  123.                 {
  124.                 case IDX_DEMO:
  125.                     RunDemo();
  126.                     break;
  127.                 default:
  128.                     /* Unknown Add-on ordinal passed */
  129.                     break;
  130.                 }
  131.                 
  132.             break;
  133.             }
  134.  
  135.         case V2LMSG_RUNABOUT:
  136.             {
  137.             // wParam:      Ordinal of Add-on
  138.             // lpParam: 
  139.             //
  140.             // Visio is telling us to run the Add-ons about dialog.
  141.             // In the case of ordinal 1, we want to run the automation demo.
  142.             //
  143.  
  144.             int ShowAboutDialog(HINSTANCE);
  145.             
  146.             switch ( wParam )
  147.                 {
  148.                 case IDX_DEMO:
  149.                     ShowAboutDialog(VLIBUTL_hModule());
  150.                     break;
  151.                 default:
  152.                     /* Unknown Add-on ordinal passed */
  153.                     break;
  154.                 }
  155.                 
  156.             break;
  157.             }
  158.  
  159.         default:
  160.             result = VAOUtil_DefVisMainProc(wMsg, wParam,
  161.                                             lpParam, VLIBUTL_hModule());
  162.             break;
  163.         };
  164.  
  165.     return result;
  166.     }
  167.